// 全局状态类型
import type { SeekResultType } from "@/utils/ScheduleManage";
import type { DeviceType, MaterialType, WddmtDeptField } from "./businessType";
import type { DictType } from "./platform";
import type { MaterialSqliteType } from "@/sqlite/material";

export type UserInfoType = {
  avatar: string;
  code: string;
  deptCode: string;
  deptName: string;
  deptParentCodes: string;
  email: string;
  id: string;
  idCard: string;
  mobile: string;
  name: string;
  nickname: string;
  openId: string;
  orgCode: string;
  permissions: string;
  roleCodes: string;
  roleNames: string;
  sex: string;
  status: string;
  subDeptCodes: string | void;
  superAdminFlag: string;
  username: string;
} | null;

/** 播放器需要的数据 */
export type CurPlayDataType = {
  /**
   * 当前播放的类型
   * - `1` 图片
   * - `2` PDF文档
   * - `3` 音频
   * - `4` 视频
   * - `ERROR` 错误数据
   * - `POLYFILL` 播放垫片
   */
  type: MaterialType["type"] | "ERROR" | "POLYFILL";

  /** 原始素材数据 */
  rawData: MaterialSqliteType | null;

  /**
   * 播放素材地址
   * - 网络资源: http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
   * - 本地视频资源: //storage/emulated/0/Download/mlkj-m180/resource/000001/ad1.mp4
   * - 本地图片资源: file:///storage/emulated/0/Download/mlkj-m180/resource/000001/test.jpg
   */
  filePath: string;

  /** 当播放出错时, 则显示的文本内容 */
  content: string;

  /** 当播放出错时, 则显示的文本内容 */
  errorText: string;

  /** 宽, 等于0时则自动适应 */
  width: number;

  /** 高, 等于0时则自动适应 */
  height: number;
};

/** 下一需要播放的素材数据 */
export type NextMaterialType = MaterialSqliteType | null;

export type indexStoreType = {
  /** 当前设备的入网信息 */
  entryNetworkInfo: DeviceType | null,
  /** websocket是否连接成功 */
  isWebsocketConnect: boolean;
  /** 当前播放的排期数据 */
  curSchedule: SeekResultType["scheduleList"];
  /** 当前播放器播放的数据 */
  curPlayData: CurPlayDataType;
  /** 下一需要播放的素材数据 */
  nextMaterial: NextMaterialType;
};

export type UserStoreType = {
  // 当前登录用户信息
  userInfo: UserInfoType;
};

export type CommonStoreType = {
  /** 平台基础 url */
  platformBaseUrl: string;
  /** 业务代理 url */
  proxyUrl: string;
  /** websocket url */
  websocketUrl: string;
  /** 网络连接是否正常 */
  networkState: boolean;
  /** 网络类型 */
  networkType: string;
  /** 最近一次网络变化时间 */
  lastNetworkChangeTime: string;
  /** 系统字典 */
  dict: { [k in WddmtDeptField]?: DictType[] };
};
